package com.ymttest.database.mapping;

import java.math.BigDecimal;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

import com.ymatou.iapi.trading.operate.parameter.req.BizVo;
import com.ymatou.iapi.trading.sellerquery.parameter.vo.FlowsDetail;

@SuppressWarnings("rawtypes")
public interface DefaultMapper {

    List<HashMap> selectProductInActivityInfoByCatalogId(Map m);

    /*************** 订单相关SQL ***************/
    // 根据订单号，查询用户支付单
    List<HashMap> selectOrderPay(long orderId);
    
    

    // 根据订单号查询订单表记录
    List<HashMap> selectOrderByOrderId(long orderId);
    
    List<HashMap> selectUsers2(int userId);
    
   
    List<HashMap> MobilePhoneAccount(int userId);
    
    // 根据订单号查询维权订单表记录
    List<HashMap> selectCreditDetailByOrderId(long orderId);
    
    // 根据订单号查询订单物流信息
    List<HashMap> selectOrderSummaryByOrderId(long orderId);
    
    // 根据主订单号查询订单表记录
    List<HashMap> selectOrderByMainOderId(long orderId);

    // 根据订单号查询订单扩展表记录
    List<HashMap> selectOrderExtByOrderId(long orderId);

    // 根据订单号查询订单状态表
    List<HashMap> selectOrderStateByOrderId(long orderId);
    
    List<Map> selectOrderStatesByOrderIds(Map m);
    
   
    
    List<Map> selectTradingStatusByOrderId(long orderId);
    
    

    // <!-- 根据卖家id，订单状态，动态时间区域条件 查询订单-->
    List<HashMap> selectOrderBySeller(Map m);

    // <!-- 根据orderid 查询卖家营销活动信息-->
    List<HashMap> selectSellerPromotion(Map m);

    // 根据订单号查询订单产品信息表
    List<HashMap> selectOrderInfoByOrderId(long orderId);

    // 根据订单号查询订单是参与活动
    List<HashMap> selectOrderInfoExtByOrderId(long orderId);

    // 根据订单号查询订单本土退货信息
    List<HashMap> selectLocalReturnInfoByOrderid(HashMap m);

    // 根据订单号查询订单交易状态表
    List<HashMap> selectOrderTradingStatusByOrderIdAndTradingStatus(long orderId, int TradingStatus);

    // 通过用户ID和订单ID查询扣款记录
    List<HashMap> selectAccountRunningTallyByUserIdAndOrderId(int UserId, long orderId);

    // 根据订单号查询补款记录
    List<HashMap> selectOrderPostPayByOrderId(long orderId);
    
    //根据订单号查询清关解冻状态
     
    List<HashMap> selectOrderFrozenDetailByOrderId(long orderId);

    // 根据订单号查询延长收货时间记录
    List<HashMap> selectOrderFrozenByOrderId(long orderId);

    // 根据订单号和用户ID查询取消订单记录
    List<HashMap> selectOrderReasonByOrderIdAndUserId(long orderId, int UserId);

    // 修改订单自动取消时间
    void updateOrderAutoCancelOrderHoursByOrderId(long orderId);

    void updateOrderAcceptTimeByOrderId(long orderId);

    void updateOrderDispathTimeByOrderId(long orderId);

    void updateOrderConfirmedTimeByOrderId(long orderId);

    void updateOrderPaidTimeByOrderId(long orderId);

    void updateOrderFrozenByOrderId(long orderId);

    // 查询订单备注
    List<HashMap> selectOrderNoteByOrderId(long orderId);

    // 查询订单备注历史记录
    List<HashMap> selectOrderNoteHistoryByOrderId(long orderId);

    // 根据交易ID查询Ymt_Tradingitem表
    List<HashMap> selectTradingitemByTradingId(int TradingId);
    

    // 根据交易ID查询Ymt_Tradinginfo 表
    List<HashMap> selectTradinginfoByTradingId(int TradingId);

    // 查询指定买家指定批次领用的优惠券
    String selectCouponCode(int UserId, int BatchId);

    // 查询补款第三方支付交易号
    List<HashMap> queryPostPayTradingInfoAndPayment(long orderId);


    // Ymt_ActivityProductSubsidy 查询补贴商品活动信息表
    List<HashMap> selectActivityProductSubsidy();   

    // selectPaymentInstructionByNewtradingId 查询交易支付指令表
    List<HashMap> selectPaymentInstructionByNewtradingId();
    
    List<HashMap> selectLoginIdUpdateHistory();
    
    List<HashMap> selectUsers();

    // selectPaymentInstructionByNewtradingId 查询交易支付指令表
    List<HashMap> selectSubsidySettlementInvoiceByOrderId(long orderId);


    // 根据OrderInfoId ymt_orderinfo 查询订单信息表
    List<HashMap> selectOrderInfoByOrderInfoId(String orderInfoId);

    // 修改用户账户金额
    void updateAccountInfo(BigDecimal Amount, int UserId);
    
    // 已发货未确认收货的订单（贝海发货）
    List<HashMap> selectOrderDispatched(int BusynessType);

    // 修改红包账户金额
    void updateGiftAccountInfo(BigDecimal Amount, int UserId);

    // 修改订单状态
    void updateTradingStatus(int TradingStatus, long orderId);


    // 动态查询
    List<HashMap> selectTradingNotifaction(HashMap m);
    
    List<HashMap> selectTradingNotifactionByOrderId(HashMap m);

    List<HashMap> selectTradingStatus(HashMap m);

    List<HashMap> selectOrder(HashMap m);

    List<HashMap> selectOrderSummary(HashMap m);

    List<HashMap> selectAccountInfo(HashMap m);

    List<HashMap> selectRefundRecord(HashMap m);

    // 修改订单为可申请退货的订单
    void updateOrderbCanLocalReturn(HashMap m);

    // 查询指定订单号结算同步表
    List<HashMap> selectYmtSettlementInvoice(long orderId);

    /*********** 搜索 ****************/
    List<HashMap> selectProductInPc(String keyword);
       

    List<HashMap> selectLicenceSeller();
    


    /**
     * region : 支付相关
     */
    List<HashMap> queryInstitutePaymentsByOrderFromPaymentNotify();

    List<HashMap> queryInstitutePaymentsByOrderFromYmtTradingItem();

    List<HashMap> queryInstitutePaymentsByOrderFromYmtPostPayTradingInfo();

    List<HashMap> queryOrderByPaymentFromPaymentNotify();

    List<HashMap> queryOrderByPaymentFromYmtTradingItem();

    List<HashMap> queryOrderByPaymentFromYmtPostPayTradingInfo();

    List<HashMap> queryRefundrequestByApproveStatus(Integer approveStatus);

    List<HashMap> queryRefundrequestByApproveStatusAndRefundStatus(int approveStatus, int refundStatus);

    /**
     * endregion : 支付相关
     */
    // <!-- 查询买手国家与可以发的物流类型mapping表 -->>
    List<HashMap> selectCatalogStatusByCountryId(int userId);

    /**
     * 优化清关状态同步接口
     * 
     * @param num
     * @return
     */
    List<HashMap> getSyncOrderLogisticStatusRequestList(int num);

    List<HashMap> getFrozenStatus(long orderId);

    List<HashMap> getFrozenStatusInOrderFrozen(long orderId);

    // 商品名关键字优化 - 查询库mongo缓存在mssql中的md5标记>
    // sellerid 商家名 md5
    /**
     * @param Map key sellerId
     * @return
     */
    List<HashMap> selectTrdSellerProductNames(Map m);

    /**
     * @return Ymt_User_At_Weixin 微信绑定信息
     */
    List<HashMap> selectLastWeixinUser();

    List<HashMap> selectOrderByUserAndSeller(Map m);

    List<HashMap> selectLastestPaidOrders();

    void deleteOrderPostPayByOrderId(Map m);

    /**
     * 查询可用InstitutionPaymentId
     * 
     * @return
     */
    List<HashMap> queryIPayment30();

    /**
     * 根据orderId查询订单余额退款表
     * 
     * @return
     */
    List<HashMap> selectAccountRefundInstruction(Map m);

    /**
     * 根据orderId查询第三方退款表
     * 
     * @return
     */
    List<HashMap> selectThirdPartyRefundInstruction(Map m);

    /**
     * 根据orderId查询第三方退款申请表
     * 
     * @return
     */
    List<HashMap> selectRefundRequest(Map m);

    /**
     * 根据orderId查询补款生成的第三方交易号
     * 
     * @return
     */
    List<HashMap> selectPostPayTradingInfo(Map m);

    
    /**
     * 根据orderId查询身份证验证同步信息
     * 
     * @return
     */
    List<HashMap> selectOrderExtByBuyerIdAndName(Map m);


    List<Map> selectOrderSummary2(Map m);
    /**
 * 根据组合条件查询买手下用户信息
 * 
 * @return
 */
    List<String> getSellerConsumersList(Map m);

    /**
 * 查询 getOrderFlows   接口
 * 	
 * @return
 */
    List<FlowsDetail> getOrderFlows(Map m);

    List<BizVo> selectYmtOrderbiz(Map m);
    @Select("select top 1 * from YmtRelease.dbo.WX_SignatureRecored where skey is not null and skey <> '' and iKeyType=#{type} order by WX_SignatureRecored.iId desc")
    List<Map> selectWXSignatureRecored(Map m);
    @Update("update YmtRelease.dbo.WX_SignatureRecored set skey=#{skey} where iId=#{id}")
    int updateWXSignatureRecored(Map m);
}
